|
|
I sometimes use transmitting surfaces for special effects.
For example you can make a surface which inverts colors this way:
pigment {color rgb 0.5 transmit -1}
finish {ambient 1 diffuse 0}
By looking at the output from POV-Ray I have figured out that a the color
you see when looking at a surface is calculated this way (or at least I
think so):
transmit_value * color_behind_the_surface
+ ( 1 - transmit_value ) * surface_color
= result
So if the color behind an inverting surface is <0.2,0.5,0.7>, then this
would be the result:
-1 * <0.2,0.5,0.7> + ( 1 - (-1) ) * <0.5,0.5,0.5>
= <-0.2,-0.5,-0.7> + <1.0,1.0,1.0>
= <0.8,0.5,0.3>
The color behind the surface has been inverted by the surface.
The reason I wrote this message is that it seems that it doesn't always work
this way.
I think that when the transmit value is above 1, the color of the surface is
ignored. I don't think the surface color should be ignored. It may not be
intuitive to have the surface color multiplied with negative values, but
then, users who use transmit values above 1 shouldn't expect intuitive
results.
I wanted to make a surface which makes the contrast bigger:
pigment {color rgb 0.5 transmit 2}
finish {ambient 1 diffuse 0}
I had expected that it would make color vales below 0.5 lower and color
values above 0.5 higher, but it didn't work that way, and I think it is
because the surface color is ignored when the transmit value is above 1.
What do you think of this?
Can and should we correct it?
Post a reply to this message
|
|